Heterogeneous processing systems, for example processors that combine a CPU and GPU (or auxiliary processor or accelerator) on a chip, are becoming increasingly common. In addition to performing graphics processing, the GPU may be used to offload computational tasks, which are relatively parallel intensive, from the CPU. Because GPU architectures are typically oriented to parallel computations, the GPU may be able to provide higher performance and lower energy consumption for these types of tasks, compared to the CPU. Support for function calls from the CPU to the GPU, in both hardware and software, is becoming more available.
While these heterogeneous processors and programming frameworks may allow the CPU to offload work to the GPU, there is typically no corresponding mechanism for the GPU to offload work back onto the CPU. Such a capability may be useful in many situations including, for example, (1) invoking an operating system function that may not be run on the GPU, (2) calling code that has not yet been ported to the GPU, and (3) executing code that is relatively sequential or follows an irregular control path that is less suitable for parallel execution.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art.